/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package py.com.spadons.esmetil.controllers.jsf;

import java.io.Serializable;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.el.ELContext;
import javax.el.ExpressionFactory;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import org.primefaces.component.menuitem.MenuItem;
import org.primefaces.component.separator.Separator;
import org.primefaces.component.submenu.Submenu;
import org.primefaces.model.DefaultMenuModel;
import org.primefaces.model.MenuModel;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import py.com.spadons.esmetil.entities.Estacion;
import py.com.spadons.esmetil.entities.Usuario;

/**
 *
 * @author spadons
 */
@ManagedBean(name = "usuarioMenuController")
@SessionScoped
public class UsuarioMenuController implements Serializable{
    
    @EJB
    private py.com.spadons.esmetil.sessionBeans.UsuarioFacade usuarioFacade;
    
    private Usuario usuario;
    private MenuModel model;

    public UsuarioMenuController() {
    }
    
    @PostConstruct
    public void inicializar(){
        
        FacesContext facesCtx = FacesContext.getCurrentInstance();
        ELContext elCtx = facesCtx.getELContext();
        ExpressionFactory expFact = facesCtx.getApplication().getExpressionFactory();
                      
        Authentication auth = SecurityContextHolder.getContext().getAuthentication();
        String name = auth.getName(); //get logged in username
      
        usuario = usuarioFacade.find(name);            
        model = new DefaultMenuModel();
        
        //Sub Menú Estaciones  
        Submenu estacionSubMenu = new Submenu();  
        estacionSubMenu.setLabel("Estacione(s)");
        
        for(Estacion e : usuario.getEstacionList()){
        
            MenuItem item = new MenuItem();
            item.setValue("Estación " + e.getCodigo());
            item.setActionExpression(expFact.createMethodExpression(elCtx, "#{indexController.cargarEstacion(" + e.getCodigo() + ")}", Void.class, new Class[]{Integer.class}));
            item.setAjax(true);
            
            /** Queda descalificado por el momento se redirecciona la url desde el metodo cargarEstacion
            if (pagina.equals("/App/WebApp/index.xhtml")) {
                item.setUpdate(":form");
            } else {
                item.setUrl("/App/WebApp/index.xhtml");
            }
            **/
            
            estacionSubMenu.getChildren().add(item);
            
        };
        
        model.addSubmenu(estacionSubMenu);
                
        //Preferencias submenu  
        Submenu preferenciasSubMenu = new Submenu();  
        preferenciasSubMenu.setLabel("Preferencias de Usuario");  
        
        /* 
        MenuItem item = new MenuItem();  
        item.setValue("Unidades Defecto");  
        preferenciasSubMenu.getChildren().add(item);  
          
        item = new MenuItem();  
        item.setValue("Idioma");  
        preferenciasSubMenu.getChildren().add(item);  
        */
        
        MenuItem item = new MenuItem();  
        item.setValue("Cambiar Contraseña");  
        item.setUrl("/App/WebApp/userAdmin.xhtml");
        preferenciasSubMenu.getChildren().add(item);  
          
        model.addSubmenu(preferenciasSubMenu);
        
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public MenuModel getModel() {
        return model;
    }

    public void setModel(MenuModel model) {
        this.model = model;
    }
    
}